﻿Imports Entidad
Imports Negocio
Imports Utilitario
Public Class frmReporteIntegral

    Dim servicio1 As New DocumentoClienteNegocio
    Dim servicio2 As New AuditoriaNegocio
    Dim servicio3 As New DocumentoAlmacenPickeadorNegocio
    Dim servicio4 As New DocumentoClienteDetalleNegocio
    Dim servicio5 As New DocumentoClienteBultoNegocio
    Dim servicio6 As New DocumentoClienteNegocio
    Dim servicio7 As New DocumentoClienteBalanzaNegocio
    Dim servicio8 As New DocumentoAlmacenDetallePickeadorUbicacionBandejaNegocio
    Dim servicio9 As New ProgramacionNegocio
    Dim servicio10 As New DocumentoAlmacenDetalleNegocio

    Sub programacionPedido()
        'Obtenemos todos los datos de la programacion
        Dim ds As DataSet = servicio9.obtenerDatosProgramacion(txtPedido.Text.Trim)

        If ds.Tables(0).Rows.Count <> 0 Then
            lblPFecha.Text = devuelveFecha(ds.Tables(0).Rows(0)("PRO_Fecha").ToString.Trim)
            lblPFechaProg.Text = devuelveFecha(ds.Tables(0).Rows(0)("PRO_FechaAsig").ToString.Trim)
            lblTurno.Text = ds.Tables(0).Rows(0)("TUR_Descripcion").ToString.Trim
            lblVehiculo.Text = ds.Tables(0).Rows(0)("VEH_Placa").ToString.Trim
            lblConfirCarga.Text = devuelveFecha(ds.Tables(0).Rows(0)("PRO_FechaCarga").ToString.Trim)
            lblSalida.Text = devuelveFecha(ds.Tables(0).Rows(0)("PRO_FecSalida").ToString.Trim)
            lblRebote.Text = ds.Tables(0).Rows(0)("Rebote").ToString.Trim
            lblPFechaEntrega.Text = devuelveFecha(ds.Tables(0).Rows(0)("PRO_FecLLegada").ToString.Trim)
        End If
    End Sub

    Sub embalajePedido()
        'Obtenemos los tiempos de embalaje tiempo fin de balanza e inicio de Celda
        Dim ds As DataSet = servicio7.obtenerTiemposEmbalaje(txtPedido.Text.Trim)

        If ds.Tables(0).Rows.Count <> 0 Then
            lblEMInicio.Text = devuelveFecha(ds.Tables(0).Rows(0)("InicioEmbalaje").ToString.Trim)
            lblEMFin.Text = devuelveFecha(ds.Tables(0).Rows(0)("FinEmbalaje").ToString.Trim)
            lblZona.Text = ds.Tables(0).Rows(0)("RUT_Descripcion").ToString.Trim
            lblTotalEmbalaje.Text = ds.Tables(0).Rows(0)("Minutos").ToString.Trim & " min."
        End If

        'Obtenemos la cantidad de bultos
        lblCantBultos.Text = dgvBultos.RowCount

        'Obtenemos la cantidad de items largos
        lblCantLargos.Text = servicio8.obtenerCantidadItemsLargos(txtPedido.Text.Trim, "P")
    End Sub

    Private Sub listarBultos()
        Dim ds2 As DataSet = servicio5.listarBultosXPedido(txtPedido.Text.Trim)
        dgvBultos.DataSource = ds2.Tables(0)
        If ds2.Tables(0).Rows.Count <> 0 Then
            dgvBultos.Rows(0).Selected = False
        End If
    End Sub

    Sub controlBalanzaPedido()
        'Obtenemos los tiempos, incluye asignacion balanza
        Dim ds1 As DataSet = servicio7.obtenerTiemposBalanza(txtPedido.Text.Trim)

        If ds1.Tables(0).Rows.Count <> 0 Then
            lblCBInicio.Text = devuelveFecha(ds1.Tables(0).Rows(0)("DCB_FechaInicio").ToString.Trim)
            lblCBFin.Text = devuelveFecha(ds1.Tables(0).Rows(0)("DCB_FechaFin").ToString.Trim)
            lblTotalBalanza.Text = ds1.Tables(0).Rows(0)("Minutos").ToString.Trim & " min."
        End If

        'Obtenemos la cantidad de Bandejas
        Dim ds2 As DataSet = servicio6.obtenerBandejasXPedido(txtPedido.Text.Trim, "R")

        If ds2.Tables(0).Rows.Count <> 0 Then
            lblCantBandejas.Text = ds2.Tables(0).Rows.Count
        End If

        'Obtenemos la balanza que se le ha asignado
        Dim dcb As New DocumentoClienteBalanza(CIA, SUC_Codigo, "P", txtPedido.Text.Trim, Nothing, Nothing)
        lblBalanza.Text = servicio7.obtenerBalanzaAsignadoPedido(dcb)

        'Obtenemos el listado de bultos del pedido
        listarBultos()
    End Sub

    Private Sub cargarPickeadores()
        Dim ds As DataSet = servicio1.listarItemsPedidos(txtPedido.Text.Trim)

        dgvItems.DataSource = ds.Tables(0)

        If ds.Tables(0).Rows.Count <> 0 Then
            dgvItems.Rows(0).Selected = False
        End If
    End Sub

    Sub pickingPedido()
        'Obtenemos la fecha de inicio picking
        Dim ds As DataSet = servicio3.obtenerFechaTotalPicking(txtPedido.Text.Trim)

        lblPIInicio.Text = ""

        lblTotalPicking.Text = ds.Tables(0).Rows(0)("TPicking").ToString.Trim

        'Obtenemos a los pickeadores
        cargarPickeadores()
    End Sub

    Function devuelveFecha(fecha As String) As String
        If fecha <> "" Then
            Dim fec As Date = Convert.ToDateTime(fecha)
            Return fec.ToString("dd/MM/yyyy HH:mm tt")
        Else
            Return ""
        End If
    End Function

    Sub asignacionPedido()
        Dim ds1 As DataSet = servicio2.obtenerAsignador(txtPedido.Text.Trim)

        If ds1.Tables(0).Rows.Count <> 0 Then
            lblAsignador.Text = ds1.Tables(0).Rows(0)("Asignador").ToString.Trim
        End If

        Dim ds2 As DataSet = servicio3.obtenerFechasAsignacion(txtPedido.Text.Trim)
        Dim ds3 As DataSet = servicio4.listarDetallePendienteAsignar("01", "01", "P", txtPedido.Text.Trim)
        Dim ds4 As DataSet = servicio3.obtenerFechasAsignador(txtPedido.Text.Trim)

        If ds2.Tables(0).Rows.Count <> 0 Then
            lblFechaAprobacion.Text = ds2.Tables(0).Rows(0)("Fecha").ToString.Trim
            lblFechaInicio.Text = ds4.Tables(0).Rows(0)("Fecha1").ToString.Trim
            lblFechaFin.Text = ds4.Tables(0).Rows(ds4.Tables(0).Rows.Count - 1)("Fecha2").ToString.Trim
            lblTotalAsig.Text = ds2.Tables(0).Rows(0)("TAsignador").ToString.Trim
        End If

        lblPendientes.Text = ds3.Tables(0).Rows.Count & " items pendientes"
    End Sub

    Sub informacionPedido()
        Dim ds As DataSet = servicio1.obtenerDatosPedido(txtPedido.Text.Trim)

        If ds.Tables(0).Rows.Count <> 0 Then
            lblCliente.Text = ds.Tables(0).Rows(0)("CLI_Descripcion").ToString.Trim
            lblDireccion1.Text = ds.Tables(0).Rows(0)("Direccion1").ToString.Trim
            lblAgencia.Text = ds.Tables(0).Rows(0)("AGE_Descripcion").ToString.Trim
            lblSucursal.Text = ds.Tables(0).Rows(0)("ATS_Descripcion").ToString.Trim
            lblDireccion2.Text = ds.Tables(0).Rows(0)("Direccion2").ToString.Trim
            lblEstado.Text = "Estado : " & ds.Tables(0).Rows(0)("EST_Descripcion").ToString.Trim
            lblItems.Text = servicio10.obtenerItemsPedido(txtPedido.Text.Trim).Tables(0).Rows.Count & " items"
            setearEstadoPedido(ds.Tables(0).Rows(0)("DCI_Estado").ToString.Trim)
        End If
    End Sub

    Sub setearEstadoPedido(codEstado As String)
        If codEstado = EST_Aprobado Then
            gbInformacion.BackColor = Color.Green
        ElseIf codEstado = EST_Asignacion Then
            gbAsignacion.BackColor = Color.Green
        ElseIf codEstado = EST_Picking Then
            gbPicking.BackColor = Color.Green
        ElseIf codEstado = EST_AsigBalanza Or codEstado = EST_ControlBalanza Then
            gbBalanza.BackColor = Color.Green
        ElseIf codEstado = EST_Embalaje Then
            gbEmbalaje.BackColor = Color.Green
        ElseIf codEstado = EST_Celda Then
            gbProgramacion.BackColor = Color.Green
        Else
            gbInformacion.BackColor = Color.Transparent
            gbAsignacion.BackColor = Color.Transparent
            gbPicking.BackColor = Color.Transparent
            gbBalanza.BackColor = Color.Transparent
            gbEmbalaje.BackColor = Color.Transparent
            gbProgramacion.BackColor = Color.Transparent
        End If
    End Sub

    Sub mostraMensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub buscar()
        If txtPedido.Text = "" Then
            mostraMensaje("Ingrese el número de pedido.")
            txtPedido.Focus()
        Else
            limpiarGrupos()
            informacionPedido()
            asignacionPedido()
            pickingPedido()
            controlBalanzaPedido()
            embalajePedido()
            programacionPedido()
        End If
    End Sub

    Private Sub btnBuscar_Click(sender As System.Object, e As System.EventArgs) Handles btnBuscar.Click
        buscar()
    End Sub

    Private Sub btnDetalle_Click(sender As System.Object, e As System.EventArgs) Handles btnDetalle.Click
        Dim detalle As New frmFormulario1(txtPedido.Text.Trim)
        detalle.ShowDialog()
    End Sub

    Private Sub btnPendientes_Click(sender As System.Object, e As System.EventArgs) Handles btnPendientes.Click
        Dim pend As New frmFormulario2(txtPedido.Text.Trim)
        pend.ShowDialog()
    End Sub

    Private Sub dgvBultos_CellContentDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvBultos.CellContentDoubleClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim detalleBultos As New frmFormulario3(txtPedido.Text.Trim, dgvBultos.Item("Column1", f).Value)
            detalleBultos.ShowDialog()
        End If
    End Sub

    Private Sub txtPedido_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtPedido.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            buscar()
        End If
    End Sub

    Sub limpiarTodo()
        txtPedido.Text = ""
        lblPIInicio.Text = ""
        lblEstado.Text = ""
        lblTotalAsig.Text = "0 min."
        lblItems.Text = "0 items"
        cargarPickeadores()
        lblCliente.Text = ""
        lblDireccion1.Text = ""
        lblAgencia.Text = ""
        lblDireccion2.Text = ""
        lblAsignador.Text = ""
        lblFechaInicio.Text = ""
        lblFechaFin.Text = ""
        lblFechaAprobacion.Text = ""
        lblPendientes.Text = "0 items pendientes"
        lblTotalPicking.Text = "0 min."
        lblCBInicio.Text = ""
        lblCBFin.Text = ""
        lblTotalBalanza.Text = "0 min."
        lblCantBandejas.Text = "0"
        lblBalanza.Text = ""
        listarBultos()
        lblEMInicio.Text = ""
        lblEMFin.Text = ""
        lblZona.Text = ""
        lblTotalEmbalaje.Text = "0 min."
        lblCantBultos.Text = "0"
        lblCantLargos.Text = "0"
        lblPFecha.Text = ""
        lblPFechaProg.Text = ""
        lblTurno.Text = ""
        lblVehiculo.Text = ""
        lblConfirCarga.Text = ""
        lblSalida.Text = ""
        lblRebote.Text = ""
        lblPFechaEntrega.Text = ""
        limpiarGrupos()
        txtPedido.Focus()
    End Sub

    Sub limpiarGrupos()
        gbInformacion.BackColor = Color.Transparent
        gbAsignacion.BackColor = Color.Transparent
        gbPicking.BackColor = Color.Transparent
        gbBalanza.BackColor = Color.Transparent
        gbEmbalaje.BackColor = Color.Transparent
        gbProgramacion.BackColor = Color.Transparent
    End Sub

    Private Sub btnLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar.Click
        limpiarTodo()
    End Sub

    Private Sub dgvItems_CellContentDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvItems.CellContentDoubleClick
        Dim f As Integer = e.RowIndex

        If f > -1 Then
            Dim pickeados As New frmFormulario4(txtPedido.Text.Trim, dgvItems.Item("Column2", f).Value, dgvItems.Item("Column14", f).Value)
            pickeados.ShowDialog()
        End If
    End Sub

End Class